package com.junsi.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import com.junsi.bean.Client;


/**   
  * @文件名: Client.java 
  * @包名: com.junsi.bean 
  * @类名: Client   
  * @时间: 2017年7月18日 下午7:16:26 
  * @作者: zhubinbin
  * @类功能描述:TODO 客户信息类dao层接口   
  */
@Component
public interface ClientMapper {

	//新增
	public Integer save(Client client);
	
	//根据id删除
	public Integer deleteById(Integer id);
	
	//修改
	public Integer update(Client client);
	
	//查询所有
	public List<Client> findByAll();
	
	//根据id查询
	public Client findById(Integer id);
	
	/**
	 * 根据登录的人员查询对于的客户
	 */
	public List<Client> findByStaffId(Integer staff_id);
	
	//客户信息分页查询
    public List<Client> findByPage(@Param("id") Integer id,@Param("endIndex") Integer endIndex,@Param("startIndex") Integer startIndex);
    
    //查询有多少条记录
    public Integer findByNumber();
    
    public List<Client> findByAlls(@Param("id")String[] id);
		
    public List<Client> findByClientName(String client_name);
    
    /**
	 * 进入代理客户模块
	 * @param depId
	 * @param staff_id
	 * @return
	 */
	public List<Client> findByDepartmentOrStaffId(@Param("depId")Integer depId,@Param("staff_id")String[] staff_id,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex,@Param("select")String select,@Param("state")String state);
	
	 /**
	 * 进入代理客户资料模块
	 * @param depId
	 * @param staff_id
	 * @return
	 */
	public List<Client> findByDepartmentOrStaffIds(@Param("depId")Integer depId,@Param("staff_id")String[] staff_id,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	
	
	/**
	 * 进入个人客户模块
	 * @param depId
	 * @param staff_id
	 * @return
	 */
	public List<Client> findByStaffIdgenzong(@Param("staff_id")String[] staff_id,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	
	
	/**
	 * 进入个人客户资料模块
	 * @param depId
	 * @param staff_id
	 * @return
	 */
	public List<Client> findByStaffIds(@Param("staff_id")String[] staff_id,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	
	/**
	 * 根据多个ID查询
	 * @param id
	 * @return
	 */
	public List<Integer> findByAllForId(@Param("id")String[] id);
	
	/**
	 * 批量删除
	 * @param id
	 * @return
	 */
	public int deleteByIds(@Param("id")String[] id);
	
	/**
	 * 代理客户条件查询
	 * @param depId
	 * @param staff_id
	 * @param select
	 * @return
	 */
	public List<Client> findByDepartmentOrStaffIdAndSelect(@Param("depId")Integer depId,@Param("staff_id")String[] staff_id,@Param("select")String select);
	
	
	
	/**
	 * 代理客户条件查询
	 * @param depId
	 * @param staff_id
	 * @param select
	 * @return
	 */
	public List<Client> findByDepartmentOrStaffIdAndSelects(@Param("depId")Integer depId,@Param("staff_id")String[] staff_id,@Param("select")String select);
	
	/**
	 * 个人客户条件查询
	 * @param staff_id
	 * @param select
	 * @return
	 */
	public List<Client> findByStaffIdAndSelects(@Param("staff_id")String[] staff_id,@Param("select")String select);
	

	/**
	 * 查询已经分配的代理客户
	 * @return
	 */
	public List<Client> findByAllForAgentOne(@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex,@Param("select")String select,@Param("state")String state);
	
	/**
	 * 查询未分配的代理客户
	 * @return
	 */
	public List<Client> findByAllForAgentTwo(Integer endIndex,Integer beforIndex);
	
	/**
	 * 查询所有个人客户
	 * @return
	 */
	public List<Client> findByAllPersonal(Integer endIndex,Integer beforIndex);
	/**
	 * 查询所有未分配个人客户
	 * @return
	 */
	public List<Client> findByAllPersonalweifen(Integer endIndex,Integer beforIndex);
	/**
	 * 查询所有正在跟踪的个人客户
	 * @return
	 */
	public List<Client> findByAllPersonalgengzong(Integer endIndex,Integer beforIndex);
	
	/**
	 * 查询所有已分配个人客户
	 * @return
	 */
	public List<Client> findByAllPersonalyifen(Integer endIndex,Integer beforIndex);
	/**
	 * 查询所有个人客户
	 * @return
	 */
	public List<Client> findByAllPersonals(Integer endIndex,Integer beforIndex);
	

	/**
	 * 分配代理客户
	 * @param client
	 * @return
	 */
	public int updateByAgent(@Param("client_id")Integer[] client_id,@Param("staff_id")Integer staff_id,@Param("depId")Integer depId,@Param("remarks")String remarks);
	
	/**
	 * 分配个人客户
	 * @param client
	 * @return
	 */
	public int updateByPersonal(@Param("client_id")Integer[] client_id,@Param("staff_id")Integer staff_id,@Param("depId")Integer depId);
	
	
	/**
	 * 代理未分配,条件查询
	 * @param start
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelect(@Param("start")String start,@Param("select")String select);
	
	/**
	 * 代理已分配,条件查询
	 * @param start
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByNo(@Param("start")String start,@Param("select")String select);
	
	/**
	 * 个人条件查询
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByGR(@Param("select")String select);
	
	/**
	 * 查询代理客户总页数
	 * @param depId
	 * @param id
	 * @return
	 */
	public Integer findByDepartmentOrStaffIdNumber(@Param("depId")Integer depId,@Param("staff_id")String[] id,@Param("select")String select,@Param("state")String state);
	
	
	/**
	 * 查询代理客户资料总页数
	 * @param depId
	 * @param id
	 * @return
	 */
	public Integer findByDepartmentOrStaffIdNumbers(@Param("depId")Integer depId,@Param("staff_id")String[] id);
	
	
	/**
	 * 查询个人客户总页数
	 * @param depId
	 * @param id
	 * @return
	 */
	public Integer findByStaffIdNumber(@Param("staff_id")String[] id);
	

	/**
	 * 查询个人客户资料总页数
	 * @param depId
	 * @param id
	 * @return
	 */
	public Integer findByStaffIdNumbers(@Param("staff_id")String[] id);
	
	/**
	 * 查询已经分配的代理客户的总数
	 * @return 
	 */
	public Integer findByAllForAgentOneNumber(@Param("state")String state,@Param("select")String select);
	
	/**
	 * 查询未分配的代理客户总数
	 * @return
	 */
	public Integer findByAllForAgentTwoeNumber();
	
	/**
	 * 后台查询所有个人客户的总数
	 * @return
	 */
	public Integer findByAllPersonalNumber();
	
	/**
	 * 后台查询所有已分配个人客户的总数
	 * @return
	 */
	public Integer findByAllPersonalNumberyifen();
	/**
	 * 后台查询所有未分配个人客户的总数
	 * @return
	 */
	public Integer findByAllPersonalNumberweifen();
	/**
	 * 后台查询所有已回收个人客户的总数
	 * @return
	 */
	public Integer findByAllPersonalNumberyihuishou();
	/**
	 * 后台查询所有正在跟踪个人客户的总数
	 * @return
	 */
	public Integer findByAllPersonalNumbergenzong();
	
	/**
	 * 后台查询所有用户客户资料的总数
	 * @return
	 */
	public Integer findByAllPersonalNumbers();
	
	/**
	 * 通过为客户资料
	 * @param id
	 * @return
	 */
	public int updateByTo(@Param("id")String[] id);
	
	/**
	 * 查询所有代理客户资料的总页数
	 * @return
	 */
	public Integer findByAllAgentDataNumber();
	
	/**
	 * 后台查询代理客户资料
	 * @param endIndex
	 * @param beforIndex
	 * @return
	 */
	public List<Client> findByAllAgentData(Integer endIndex,Integer beforIndex);
	
	/**
	 * 代理客户资料,条件查询
	 * @param start
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectData(@Param("start")String start,@Param("select")String select);
	
	/**
	 * 后台个人客户资料查询
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByGRData(String select);
	/**
	 * 后台未分配个人客户查询
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByGRDataweifen(@Param("select")String select,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 后台跟踪个人客户查询
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByGRDatagenzong(@Param("select")String select,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 后台未分配个人客户查询总数
	 * @param select
	 * @return
	 */
	public Integer findByAllFroSelectByGRDataweifenzongshu(@Param("select")String select);
	/**
	 * 后台正在跟踪个人客户查询总数
	 * @param select
	 * @return
	 */
	public Integer findByAllFroSelectByGRDatagenzhongshu(@Param("select")String select);
	
	/**
	 * 后台已分配个人客户资料查询
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByyifen(String select);
	
	/**
	 * 客户资料》用户资料
	 */
	public List<Client> findAllPersonals();
	/**
	 * 客户资料》用户资料，已分配的
	 */
	public List<Client> findAllyifenPersonal();
	/**
	 * 客户资料》用户资料，未分配的
	 */
	public List<Client> findAllweifenPersonal();
	/**
	 * 客户资料》用户开发，正在跟踪的
	 */
	public List<Client> findAllyifenPersonalgenzong();
	/**
	 * 导出客户资料》代理资料
	 */
	public List<Client> findAllAgentData();
	/**
	 * 导出资料开发》用户资料
	 */
	public List<Client> findAllPersonal();
	/**
	 * 导出客户资料》代理开发
	 */
	public List<Client> findAllForAgentOne();
	/**
	 * 根据登录的人员查询正在跟踪所有的客户
	 */
	public List<Client> findByStaffIdkaifa(@Param("staff_id")String[] staff_id,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 根据登录的人员统计正在跟踪所有的客户的总数
	 * @param depId
	 * @param id
	 * @return
	 */
	public Integer findByStaffIdNumberkaifa(@Param("staff_id")String[] id);
	/**
	 * 个人客户已开发条件查询
	 * @param staff_id
	 * @param select
	 * @return
	 */
	public List<Client> findByStaffIdAndSelectkaifa(@Param("staff_id")String[] staff_id,@Param("select")String select,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 个人客户已开发条件查询，记录总数
	 * @param depId
	 * @param id
	 * @return
	 */
	public Integer findByStaffIdAndSelectyikaifazongshu(@Param("staff_id")String[] staff_id,@Param("select")String select);
	/**
	 * 个人客户正在跟踪条件查询，记录总数
	 * @param depId
	 * @param id
	 * @return
	 */
	public Integer findByStaffIdAndSelectgengzongzongshu(@Param("staff_id")String[] staff_id,@Param("select")String select);
	/**
	 * 个人客户正在跟踪条件查询
	 * @param staff_id
	 * @param select
	 * @return
	 */
	public List<Client> findByStaffIdAndSelect(@Param("staff_id")String[] staff_id,@Param("select")String select,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 个人客户正在跟踪条件查询
	 * @param staff_id
	 * @param select
	 * @return
	 */
	public List<Client> findByStaffIdqiangenzong(@Param("staff_id")String[] staff_id,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 后台查询所有已回收个人客户
	 * @return
	 */
	public List<Client> findByAllPersonalhuishou(Integer endIndex,Integer beforIndex);
	/**
	 * 后台正在跟踪个人客户查询总数
	 * @param select
	 * @return
	 */
	public Integer findByAllFroSelectByGRDatakaifashu(@Param("select")String select);
	/**
	 * 后台正在跟踪个人客户查询总数
	 * @param select
	 * @return
	 */
	public Integer findByAllFroSelectByGRDatahuishoushu(@Param("select")String select);
	/**
	 * 后台未分配个人客户查询
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByGRDatachayikaifa(@Param("select")String select,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 后台未分配个人客户查询
	 * @param select
	 * @return
	 */
	public List<Client> findByAllFroSelectByGRDatachayihuishou(@Param("select")String select,@Param("endIndex")Integer endIndex,@Param("beforIndex")Integer beforIndex);
	/**
	 * 客户资料》用户开发，正在跟踪的
	 */
	public List<Client> findAllyifenPersonalhuishoua();
}
